<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <!-- 
        async/await 对函数执行顺序的影响
            总的执行顺序：当 async 函数执行到 await 时，会将 await 后面接的函数先执行一遍，
            然后跳出整个 async 函数，继续执行当前事件循环，当前事件循环结束之后，回到 async 函数中，
            如果这时 await 函数已经有了结果，那么就继续执行 async 函数，否则继续等待。
            如果 await 函数返回一个 promise 对象，此时把该对象添加到 microtasks 队列。
     -->

     <H4 id="h4"> 关于async/await 的执行时机， 如果忘记宏任务和微任务建议先去复习该块知识</H4> 
     <a href="https://blog.csdn.net/RUCwang/article/details/81712308"> 参考链接 </a>

    <script>
        // async function async1() {
        //     console.log('async1 start')  //2
        //     await async2()
        //     console.log('async1 end') // 6
        // }

        // async function async2() {
        //     console.log('async2') // 3
        // }

        // console.log('script start') // 1

        // setTimeout(function () {
        //     console.log('settimeout') // 8
        // })

        // async1()

        // new Promise(function (resolve) {
        //     console.log('promise1') // 4
        //     resolve()
        // }).then(function () {
        //     console.log('promise2') // 7
        // })

        // console.log('script end') // 5

        // 写一个自执行函数
        (function () {
            console.log("this", this)
        })()

    </script>
</body>

</html>
